﻿<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="Content-Language" content="zh-CN"><link href="stylesheet.css" media="all" rel="stylesheet" type="text/css">
<title>数据类型</title>
<script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script>
</head><body class="CHAPTER">
<div>
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><th colspan="5" align="center" valign="bottom">PostgreSQL 8.2.3 中文文档</th></tr>
<tr><td width="10%" align="left" valign="top"><a href="queries-values.html" accesskey="P">后退</a></td><td width="10%" align="left" valign="top"><a href="queries.html">快退</a></td><td width="60%" align="center" valign="bottom"></td><td width="10%" align="right" valign="top"><a href="functions.html">快进</a></td><td width="10%" align="right" valign="top"><a href="datatype-numeric.html" accesskey="N">前进</a></td></tr>
</table>
<hr align="LEFT" width="100%"></div>
<div class="CHAPTER"><h1><a name="DATATYPE"></a>章8. 数据类型</h1>
<div>
<dl>
<dt><b>目录</b></dt>
<dt>8.1. <a href="datatype-numeric.html">数值类型</a></dt>
<dd><dl>
<dt>8.1.1. <a href="datatype-numeric.html#DATATYPE-INT">整数类型</a></dt>
<dt>8.1.2. <a href="datatype-numeric.html#DATATYPE-NUMERIC-DECIMAL">任意精度数值</a></dt>
<dt>8.1.3. <a href="datatype-numeric.html#DATATYPE-FLOAT">浮点数类型</a></dt>
<dt>8.1.4. <a href="datatype-numeric.html#DATATYPE-SERIAL">序列号类型</a></dt>
</dl></dd>
<dt>8.2. <a href="datatype-money.html">货币类型</a></dt>
<dt>8.3. <a href="datatype-character.html">字符类型</a></dt>
<dt>8.4. <a href="datatype-binary.html">二进制数据类型</a></dt>
<dt>8.5. <a href="datatype-datetime.html">日期/时间类型</a></dt>
<dd><dl>
<dt>8.5.1. <a href="datatype-datetime.html#DATATYPE-DATETIME-INPUT">日期/时间输入</a></dt>
<dt>8.5.2. <a href="datatype-datetime.html#DATATYPE-DATETIME-OUTPUT">日期/时间输出</a></dt>
<dt>8.5.3. <a href="datatype-datetime.html#DATATYPE-TIMEZONES">时区</a></dt>
<dt>8.5.4. <a href="datatype-datetime.html#DATATYPE-DATETIME-INTERNALS">内部</a></dt>
</dl></dd>
<dt>8.6. <a href="datatype-boolean.html">布尔类型</a></dt>
<dt>8.7. <a href="datatype-geometric.html">几何类型</a></dt>
<dd><dl>
<dt>8.7.1. <a href="datatype-geometric.html#AEN5354">点</a></dt>
<dt>8.7.2. <a href="datatype-geometric.html#AEN5367">线段</a></dt>
<dt>8.7.3. <a href="datatype-geometric.html#AEN5395">矩形</a></dt>
<dt>8.7.4. <a href="datatype-geometric.html#AEN5423">路径</a></dt>
<dt>8.7.5. <a href="datatype-geometric.html#AEN5456">多边形</a></dt>
<dt>8.7.6. <a href="datatype-geometric.html#AEN5481">圆</a></dt>
</dl></dd>
<dt>8.8. <a href="datatype-net-types.html">网络地址类型</a></dt>
<dd><dl>
<dt>8.8.1. <a href="datatype-net-types.html#DATATYPE-INET"><tt class="TYPE">inet</tt></a></dt>
<dt>8.8.2. <a href="datatype-net-types.html#DATATYPE-CIDR"><tt class="TYPE">cidr</tt></a></dt>
<dt>8.8.3. <a href="datatype-net-types.html#DATATYPE-INET-VS-CIDR"><tt class="TYPE">inet</tt> 对比 <tt class="TYPE">cidr</tt></a></dt>
<dt>8.8.4. <a href="datatype-net-types.html#DATATYPE-MACADDR"><tt class="TYPE">macaddr</tt></a></dt>
</dl></dd>
<dt>8.9. <a href="datatype-bit.html">位串类型</a></dt>
<dt>8.10. <a href="arrays.html">数组</a></dt>
<dd><dl>
<dt>8.10.1. <a href="arrays.html#AEN5729">数组类型的声明</a></dt>
<dt>8.10.2. <a href="arrays.html#AEN5750">数组值输入</a></dt>
<dt>8.10.3. <a href="arrays.html#AEN5787">访问数组</a></dt>
<dt>8.10.4. <a href="arrays.html#AEN5821">修改数组</a></dt>
<dt>8.10.5. <a href="arrays.html#AEN5858">在数组中检索</a></dt>
<dt>8.10.6. <a href="arrays.html#AEN5867">数组输入和输出语法</a></dt>
</dl></dd>
<dt>8.11. <a href="rowtypes.html">复合类型</a></dt>
<dd><dl>
<dt>8.11.1. <a href="rowtypes.html#AEN5919">声明复合类型</a></dt>
<dt>8.11.2. <a href="rowtypes.html#AEN5934">复合类型值输入</a></dt>
<dt>8.11.3. <a href="rowtypes.html#AEN5955">访问复合类型</a></dt>
<dt>8.11.4. <a href="rowtypes.html#AEN5966">修改复合类型</a></dt>
<dt>8.11.5. <a href="rowtypes.html#AEN5977">复合类型输入和输出语法</a></dt>
</dl></dd>
<dt>8.12. <a href="datatype-oid.html">对象标识符类型</a></dt>
<dt>8.13. <a href="datatype-pseudo.html">伪类型</a></dt>
<dt>8.14. <a href="datatype-xml.html">XML文档支持</a></dt>
</dl>
</div>
<a name="AEN3671"></a><a name="AEN3673"></a>
<p>PostgreSQL 有着丰富的内置数据类型可用。用户还可以使用 <a href="sql-createtype.html"><i>CREATE TYPE</i></a> 命令增加新的数据类型。</p>
<p><a href="datatype.html#DATATYPE-TABLE">表8-1</a>显示了所有内置的普通数据类型。在"别名"列里列出的大多数可选名字都是因历史原因 PostgreSQL 在内部使用的名字。另外，还有一些内部使用的或者废弃的类型也可以使用，但没有在这里列出。</p>
<div class="TABLE"><a name="DATATYPE-TABLE"></a>
<p><b>表8-1. 数据类型</b></p>
<table border="1" class="CALSTABLE"><col><col><col>
<thead>
<tr><th>名字</th><th>别名</th><th>描述</th></tr>
</thead>
<tbody>
<tr><td><tt class="TYPE">bigint</tt></td><td><tt class="TYPE">int8</tt></td><td>有符号 8 字节整数</td></tr>
<tr><td><tt class="TYPE">bigserial</tt></td><td><tt class="TYPE">serial8</tt></td><td>自增 8 字节整数</td></tr>
<tr><td><tt class="TYPE">bit [ (<tt class="REPLACEABLE"><i>n</i></tt>) ]</tt></td><td>&nbsp;</td><td>定长位串</td></tr>
<tr><td><tt class="TYPE">bit varying [ (<tt class="REPLACEABLE"><i>n</i></tt>) ]</tt></td><td><tt class="TYPE">varbit</tt></td><td>变长位串</td></tr>
<tr><td><tt class="TYPE">boolean</tt></td><td><tt class="TYPE">bool</tt></td><td>逻辑布尔值(真/假)</td></tr>
<tr><td><tt class="TYPE">box</tt></td><td>&nbsp;</td><td>平面中的矩形</td></tr>
<tr><td><tt class="TYPE">bytea</tt></td><td>&nbsp;</td><td>二进制数据("字节数组")</td></tr>
<tr><td><tt class="TYPE">character varying [ (<tt class="REPLACEABLE"><i>n</i></tt>) ]</tt></td><td><tt class="TYPE">varchar [ (<tt class="REPLACEABLE"><i>n</i></tt>) ]</tt></td><td>变长字符串</td></tr>
<tr><td><tt class="TYPE">character [ (<tt class="REPLACEABLE"><i>n</i></tt>) ]</tt></td><td><tt class="TYPE">char [ (<tt class="REPLACEABLE"><i>n</i></tt>) ]</tt></td><td>定长字符串</td></tr>
<tr><td><tt class="TYPE">cidr</tt></td><td>&nbsp;</td><td>IPv4 或 IPv6 网络地址</td></tr>
<tr><td><tt class="TYPE">circle</tt></td><td>&nbsp;</td><td>平面中的圆</td></tr>
<tr><td><tt class="TYPE">date</tt></td><td>&nbsp;</td><td>日历日期(年, 月, 日)</td></tr>
<tr><td><tt class="TYPE">double precision</tt></td><td><tt class="TYPE">float8</tt></td><td>双精度浮点数字</td></tr>
<tr><td><tt class="TYPE">inet</tt></td><td>&nbsp;</td><td>IPv4 或 IPv6 网络地址</td></tr>
<tr><td><tt class="TYPE">integer</tt></td><td><tt class="TYPE">int</tt>, <tt class="TYPE">int4</tt></td><td>有符号 4 字节整数</td></tr>
<tr><td><tt class="TYPE">interval [ (<tt class="REPLACEABLE"><i>p</i></tt>) ]</tt></td><td>&nbsp;</td><td>时间间隔</td></tr>
<tr><td><tt class="TYPE">line</tt></td><td>&nbsp;</td><td>平面中的无限长直线</td></tr>
<tr><td><tt class="TYPE">lseg</tt></td><td>&nbsp;</td><td>平面中的线段</td></tr>
<tr><td><tt class="TYPE">macaddr</tt></td><td>&nbsp;</td><td>MAC 地址</td></tr>
<tr><td><tt class="TYPE">money</tt></td><td>&nbsp;</td><td>货币金额</td></tr>
<tr><td><tt class="TYPE">numeric [ (<tt class="REPLACEABLE"><i>p</i></tt>, <tt class="REPLACEABLE"><i>s</i></tt>) ]</tt></td><td><tt class="TYPE">decimal [ (<tt class="REPLACEABLE"><i>p</i></tt>, <tt class="REPLACEABLE"><i>s</i></tt>) ]</tt></td><td>可选精度的准确数字</td></tr>
<tr><td><tt class="TYPE">path</tt></td><td>&nbsp;</td><td>平面中的几何路径</td></tr>
<tr><td><tt class="TYPE">point</tt></td><td>&nbsp;</td><td>平面中的点</td></tr>
<tr><td><tt class="TYPE">polygon</tt></td><td>&nbsp;</td><td>平面中的封闭几何路径</td></tr>
<tr><td><tt class="TYPE">real</tt></td><td><tt class="TYPE">float4</tt></td><td>单精度浮点数</td></tr>
<tr><td><tt class="TYPE">smallint</tt></td><td><tt class="TYPE">int2</tt></td><td>有符号 2 字节整数</td></tr>
<tr><td><tt class="TYPE">serial</tt></td><td><tt class="TYPE">serial4</tt></td><td>自增 4 字节整数</td></tr>
<tr><td><tt class="TYPE">text</tt></td><td>&nbsp;</td><td>变长字符串</td></tr>
<tr><td><tt class="TYPE">time [ (<tt class="REPLACEABLE"><i>p</i></tt>) ] [ without time zone ]</tt></td><td>&nbsp;</td><td>一天中的时间</td></tr>
<tr><td><tt class="TYPE">time [ (<tt class="REPLACEABLE"><i>p</i></tt>) ] with time zone</tt></td><td><tt class="TYPE">timetz</tt></td><td>一天里的时间，包括时区</td></tr>
<tr><td><tt class="TYPE">timestamp [ (<tt class="REPLACEABLE"><i>p</i></tt>) ] [ without time zone ]</tt></td><td>&nbsp;</td><td>日期和时间</td></tr>
<tr><td><tt class="TYPE">timestamp [ (<tt class="REPLACEABLE"><i>p</i></tt>) ] with time zone</tt></td><td><tt class="TYPE">timestamptz</tt></td><td>日期和时间，包括时区</td></tr>
</tbody>
</table>
</div>
<div class="NOTE">
<blockquote class="NOTE">
<p><b>【兼容性】</b>下列类型(或者那样拼写的)是 SQL 声明的：<tt class="TYPE">bit</tt>, <tt class="TYPE">bit varying</tt>, <tt class="TYPE">boolean</tt>, <tt class="TYPE">char</tt>, <tt class="TYPE">character varying</tt>, <tt class="TYPE">character</tt>, <tt class="TYPE">varchar</tt>, <tt class="TYPE">date</tt>, <tt class="TYPE">double precision</tt>, <tt class="TYPE">integer</tt>, <tt class="TYPE">interval</tt>, <tt class="TYPE">numeric</tt>, <tt class="TYPE">decimal</tt>, <tt class="TYPE">real</tt>, <tt class="TYPE">smallint</tt>, <tt class="TYPE">time</tt>(有时区和无时区), <tt class="TYPE">timestamp</tt>(有时区和无时区)</p>
</blockquote>
</div>
<p>每种数据类型都有一个由其输入和输出函数决定的外部表现形式。许多内建的类型有明显的格式。不过，许多类型要么是 PostgreSQL 所特有的，比如几何路径，要么是有几种不同的格式，比如日期和时间类型。有些输入和输出函数是不可逆的。也就是说，输出函数的输出结果和原始的输入比较的时候可能丢失精度。</p>
</div>
<div>
<hr align="LEFT" width="100%">
<table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><td width="33%" align="left" valign="top"><a href="queries-values.html" accesskey="P">后退</a></td><td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">首页</a></td><td width="33%" align="right" valign="top"><a href="datatype-numeric.html" accesskey="N">前进</a></td></tr>
<tr><td width="33%" align="left" valign="top"><tt class="LITERAL">VALUES</tt> 列表</td><td width="34%" align="center" valign="top"><a href="sql.html" accesskey="U">上一级</a></td><td width="33%" align="right" valign="top">数值类型</td></tr>
</table>
</div>
</body></html>